package BloodTimeHybernateTest;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import BloodTimeHybernateDO.CiudadDO;
import BloodTimeHybernateDO.VisitaDO;

/**
 * 
 * @author Eduardo D. Sandoval V.
 * 
 */
public class TestCiudadDO {

	public static void main(String[] args) {
		Configuration configuration = new AnnotationConfiguration();
		configuration.configure("/BloodTimeHybernateDO/hibernate.cfg.xml");
		SessionFactory sessionFactory = configuration.buildSessionFactory();

		// ------------------------------
		// Insert
		// ------------------------------

		Session session = sessionFactory.openSession();
		session.beginTransaction();
		for (int i = 0; i < 10; i++) {
			CiudadDO ciudad = new CiudadDO();
			ciudad.setNombre("Ciudad " + i + 1);
			ciudad.setDescripcion("Descripcion " + i + 1);
			session.save(ciudad);
		}

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// Load
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		CiudadDO ciudad = new CiudadDO();

		ciudad = null;
		ciudad = (CiudadDO) session.load(CiudadDO.class, 1);

		System.out.println("Load Ciudad");
		System.out.println("Id: " + ciudad.getId());
		System.out.println("Nombre: " + ciudad.getNombre());

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// Query
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		Query query;

		ciudad = null;
		query = session.createQuery("FROM CiudadDO WHERE id = :ciudadId");
		query.setParameter("ciudadId", 1);

		ciudad = (CiudadDO) query.uniqueResult();

		System.out.println("Query Ciudad 1");
		System.out.println("Id: " + ciudad.getId());
		System.out.println("Nombre: " + ciudad.getNombre());

		// ---------------------------------------------------------------
		// Delete
		// ---------------------------------------------------------------

		session.delete(ciudad);

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// List
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		System.out.println("List Ciudad");

		List<CiudadDO> list = session.createCriteria(CiudadDO.class).list();
		for (CiudadDO ciudadDO : list) {
			System.out.println("Id: " + ciudadDO.getId());
			System.out.println("Nombre: " + ciudadDO.getNombre());

		}

		session.getTransaction().commit();
		session.close();
	}

}
